묻고 답해요
129만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결최신 딥러닝 기술 Vision Transformer 개념부터 Pytorch 구현까지
강의 자료 슬라이드
강의 자료에 슬라이드는 없나요??
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
선생님 세그멘테이션관련 질문을 드립니다 ㅎ
선생님 안녕하세요이번에 선생님강의 머신러닝2개, 컴퓨터비젼2개를 모두 완강한 열혈팬 회사원입니다 ㅎㅎㅎ선생님 강의 덕분에 이번에 회사에서 세그멘테이션을 담당하게 되엇는데, 세그멘테이션강의관련 질문이 잇어서 이렇게 메일을 드립니다 ㅎ 바쁘시겟지만 조언 좀 부탁드리겟습니다<배경>이번에 검출할 객체(첨부파일)는 바늘과 같이 아주 가늘고 긴 객체(섬유)인데 이미지1장당 객체전체면적이 0.5 - 2%밖에 없는 아주 미세한 객체입니다. 실제원본데이터에서도 객체는 눈으로 자세히 보아야 검출할수 잇을정도입니다 ㅎ (학습데이터30장, 학습마스크영상 30장, 테스트데이터 5장 ). 사용모델은 깃헙에서 공개한 U-NET모델로 세그멘테이션을 수행햇는데, 첫epoch부터 정확도가 90%이상, 로스가 0.1이하로 상당히 높은 성능을 보엿는데 예측결과이미지영상에는 아무것도 검출이 안된 상태(완전검은영상)입니다. 참고로 다른 이미지데이터를 가지고 U-NET모델로 세그멘테이션을 수행해본결과 예측결과도 상당히 잘되어서 모델에는 문제가없는것으로 판단햇습니다.여기서 조언을 좀 부탁드리겠습니다.1> 정확도는 90%이상, 로스가 0.1이하인데 아무것도 검출이 안되엇다는 것은 , 객체가 너무미세해서 검출을 못한걸로 이해해도 되는지요?2> 이런경우 성능을 올리기 위한방법으로 오그멘테이션방법도 잇는데, 특히 사용해야할 오그멘테이션방법이 잇는지요? 참고로 확대기능등을 사용햇습니다.3> 다른방법으로 선생님CNN강의에서사용한 mark-rcnn 방법도 해볼려고 하는데, 어떻게 생각하시는지요?글을 적다보기 글이 너무 길어져서 죄송합니다, 바쁘시겟지만 조언 좀 부탁드리겟습니다 ㅎ
-
해결됨최신 딥러닝 기술 Vision Transformer 개념부터 Pytorch 구현까지
비전 트랜스포머 - 최신 모델 강의에서 positional embedding
안녕하세요!비전 트랜스포머 - 최신 모델 강의에서예시로 설명해주신 R^65*128에 Epos 인 positional embedding을 더하는데도 R^65*128의 크기에는 변화가 없나요?? 이전에 클래스 정보를 더했을 때는 64에서 +1해서 65가 되었는데 positional embedding을 했을 때는 값에 변화가 없나 궁금해서 질문드립니다.
-
해결됨최신 딥러닝 기술과 객체인식
Yolov2 NIN에 대한 질문
안녕하세요 강의 잘 보고 있습니다Yolov2에서 Darknet-19 백본을 사용하는데, 여기서 NIN 기술이 적용되었다고 나오는데논문이나 코드에서 이 부분에 대한 언급을 알 수 있을까요?또한 해당 기술이, 보통 채널은 변경하는데 아웃풋 사이즈를 안바꾸는 1x1 컨벌루션과 다른건가요?감사합니다
-
해결됨[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
모듈에서 제공하는 것 외 추가적인 Pretrain model 적용방법
안녕하십니까! 배운내용 바탕으로 프로젝트 해보는 와중 해결되지 않는 부분이 있어 문의드립니다.pytorch에서 densenet(pytorch 기본제공)과 SWIN-transformer(pytorch 미제공, git에 공유된 모델 활용)을 backbone으로 활용하고 싶습니다.swin-unet처럼 모듈에서 제공하지 않는 모델의 경우 어떤식으로 코드를 작성해야할까요?dictionary 형태의 pth 파일이라 *****.load_state_dict('~~~~.pth')을 활용해야할것 같은데 *****부분에 모델을 넣어줘야되는데 기본제공 모듈이 아니라 어떤식으로 해야할지 감이 오지 않습니다. 1번 문제가 해결이 된다면, densenet과 swin-transformer을 sequential 형태로 조합하여 pretrain으로 시키고 싶은데 어떻게 접근을 하면 될까요? 아래 코드에서 backbone 부분 어떻게 해야할지 방향 잡아주시면 너무 감사할것 같습니다.path = '/content/drive/MyDrive/swin_tiny_patch4_window7_224.pth' #swin-Transformer 모델 pretrained_weights = torch.load(path, map_location='cpu') class ImgFeatureExtractor(nn.Module): def __init__(self): super(ImgFeatureExtractor, self).__init__() # self.backbone = models.efficientnet_b0(pretrained=True) self.backbone = models.densenet201(pretrained=True) self.backbone = *****.load_state_dict(pretrained_weights) self.embedding = nn.Linear(1000,512) def forward(self, x): x = self.backbone(x) x = self.embedding(x) return x
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
메모리 부족으로 Faster R-CNN 학습을 할 수 없습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 강의 내용을 질문할 경우 몇분 몇초의 내용에 대한 것인지 반드시 기재 부탁드립니다. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. (노션에 다운받을 수있습니다)mm_faster_rcnn_train_kitti.ipynb여기에 바로 올리고 싶었는데 인프런이 허용을 안해주네요 MMdetection의 이해와 Faster R-CNN 적용 실습 부분입니다. 문제 및 상황인식:학원 가상환경에서 문제메모리가 부족하다고 뜨면서 커널이 끊겼습니다.(목차 3번 사진 참고)저는 이 문제가 배치 사이즈가 커서 생긴 문제라고 보았습니다. 하지만 아래의 목차 5번과 같이 배치 사이즈를 줄여도 메모리 부족이 뜹니다. 어떻게 하면 해결할 수있을까요?배치나 기타 하이퍼 파라미터를 조정해도 학원 가상환경의 메모리 자체가 적어서 생기는 문제일까요? (참고로 구글 코렙에서는 잘 작동했습니다. 다만 GPU 사용량이 초과해서 None으로 학습을 하면 cuda를 못쓴다고 에러가 납니다.) 목차상황설명상황설명문제발생 및 사진해결시도1, 실패해결시도2, 실패 (상황설명) 저는 AI 국비지원 학원을 다니는 학생입니다. 학원에서 배우는 것만으로는 MMdetecrtion을 다룰 수 없어서 이 강의를 듣게 되었습니다. 이걸 듣고 난 후 MMdetecrtion으로 학원 과제를 수행하고자 했습니다. 그리고 구글 코랩은 공짜로 돌리다가 GPU 제한으로 못쓰고 학습이 안되었습니다.(상황설명) 학원에서 아래와 같은 성능의 전용 가상환경을 제공합니다. 그래서 경로만 조정하고 그대로 똑같이 돌렸습니다.3. (문제발생)그런데 학습을 하는데 아래의 그림과 같이 메모리가 부족하다고 뜨면서 커널이 끊겼습니다. 4. (해결시도1, 실패) cfg.data.samples_per_gpu = 4 넣기아래의 그림과 같이 cfg.data.samples_per_gpu = 4를 넣었지만,auto_scale_lr = dict(enable=False, base_batch_size=16)는 그대로 16이었습니다. 일단 무시하고 돌려보았지만 여전히 실패했습니다. 5.( 해결시도2, 실패) defaul_runtime.py에 들어가서 batch size를 1로 바꾸기그결과 auto_scale_lr = dict(enable=False, base_batch_size=1)로 바뀌었습니다. 학원 가상환경에서 문제메모리가 부족하다고 뜨면서 커널이 끊겼습니다.(목차 3번 사진 참고) 어떻게 하면 좋을까요?
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
mmcv v2.0.0 문제
선생님 안녕하세요 좋은 강의 감사합니다.from mmdet.apis import init_detector, inference_detector import mmcv를 하면 아래와 같은 경고 메시지가 뜨는데요./usr/local/lib/python3.7/dist-packages/mmcv/__init__.py:21: UserWarning: On January 1, 2023, MMCV will release v2.0.0, in which it will remove components related to the training process and add a data transformation module. In addition, it will rename the package names mmcv to mmcv-lite and mmcv-full to mmcv. See https://github.com/open-mmlab/mmcv/blob/master/docs/en/compatibility.md for more details. 'On January 1, 2023, MMCV will release v2.0.0, in which it will remove ' 혹시 이것에 맞춰서 코드의 내용이 많이 변할까요? 뒷부분은 이름이 바뀐다는 것 같은데, 앞부분에서 "it will remove components related to the training process and add a data transformation module." 부분이 무슨뜻인지 잘 모르겠어서요!
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
tensorboard error
안녕하세요 강사님,저는 보완 문제로 폐쇄 네트워크환경(소스내에서 downloac 차단)에서 object detection AutoML을 실행하고 있습니다. yolov3 소프 포팅후 자체 host pc에서 running이 되도록 해야 하는데 환경구축이 만만치 않네요.. 모든 datasets zip 파일들을 따로 다운 받아 집에서는 vs code나 jupyter notebook으로 작업하고 회사에서는 kubeflow notebook 환경에서 테스트 진행하고 있습니다.질문 1: coco val & coco test에서 --data coco.yaml 대신 --data coco128.yaml로 실행해도 되는 건지 알고 싶습니다.질문 2: train.py 전에 tensorboard launch 시 에러가 나옵니다. 해결 방법을 알려 주시면 감사 하겠습니다.질문 3: 질문2의 에러가 해결되어 train.py 실행 되는 건지, 그리고 coco test를 하지 않고 바로 train.py를 진행해도 되는건지 알고 싶습니다. 집에서 vs code나 jupyter notebook에서 train.py 실행을 하면 아래 같은 에러가 나옵니다.coco128.yaml 에서 download 차단 없이 진행하면 kernel 이 죽어 restarting 이 되고 진행이 안되네요..download 차단하면 맨 아래 캡쳐 화면 처럼 멈쳐 버리고 Dead kernel 이 되어 버립니다. 혹 질문 2의 tensorboard 에러와 관련이 있는 건지 알려 주시기 바랍니다.질문 4: 마지막 질문인데.. 이 질문은 강의 내용에서 벗어나는 질문 이지만 해결을 못하고 있어 조언을 듣고자 합니다. 로컬 호스트 환경에서 yolov5 train.py가 잘 돌고 있는 상황에서 docker 이미지 빌디시 Dockerfile의 베이스 이미지를 FROM nvcr.io/nvidia/pytorch:21.10-py3 로 하면 container 가 바로 죽고 실행이 안되며, FROM python:3.9로 하면 container가 running 되는데 train.py 가 실행되다 epochs를 하다 멈쳐 버립니다. 이 문제가 gpu 문제인건지 아님 단지 memory 부족 문제인지 잘 판단이 안되는데.. 소중한 의견 주시면 감사 하겠습니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
RCNN에서 손실함수 구하기
안녕하세요?RCNN의 경우 classification에 대한 loss는 구할 수 없고 다만 bounding box regression은 구할 수 있는지 이유가 궁금합니다.RCNN의 경우는 최종 값을 판별하는 분류기가 CNN과 분리되어 있어서 역전파를 할 수 없어 classification의 경우는 오차 함수를 구할 수 가 없다고 이해했습니다. 그런데 어떻게 bounding box regression은 Loss 값을 구할 수 있는지 궁금합니다. 구한 Loss 값으로 CNN이 업데이트가 가능한지요?바쁘신 와중에 답변 주셔서 감사합니다^__________^
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
Training dataset 관련
안녕하세요 강사님, 항상 좋은 수업 잘 듣고있습니다. mmdetection으로 Mask-RCNN + Resnet-101 model Training중 Training Dataset 구성 관련하여 질문있습니다. 제가 기존 model을 학습시키는데 사용된 모든 이미지 데이터는 1280x720 해상도였습니다.그러나 이번에 수집한 데이터는 2208x1242 해상도입니다. Q1. 각기 다른 해상도로 촬영된 이미지들을 하나의 데이터셋으로 만들고, 네트워크에 학습시켜도 문제가 없을까요?당연히 COCO dataset이나 PASCAL dataset을 살펴봐도 다양한 해상도의 이미지를 annotation하여 구성하였기 때문에 문제될 건 없다고 생각하는데일반적으로, 1280x720 해상도 이미지를 추론하는 경우, 동일한 해상도의 데이터셋으로 학습된 모델이 성능이 더 우수한지 궁금해서요.ex) 1280x720 이미지 추론시, 1280x720 해상도만으로 이루어진 데이터셋으로 학습된 model 사용1920x1080 이미지 추론시, 1920x1080 해상도만으로 이루어진 데이터셋으로 학습된 model 사용 2208x1242 이미지 추론시, 2208x1242 해상도만으로 이루어진 데이터셋으로 학습된 model 사용만약 일반적으로 이렇게 한다면, 새로 획득한 데이터가 아닌 라벨링되지 않은 1280x720해상도 데이터들을 더 annotation 작업 진행하려 합니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
GPU, test dataset 질문
코드 실행 후 두가지 여쭤보고 싶은 것이 있어 질문 드려봅니다.1.먼저 train, validation 데이터셋으로 학습을 시켜보았습니다.혹시 test dataset은 train, validation 데이터 이외의 학습시키지 않은 데이터로 결과를 확인하면 되나요? test dataset는 말그대로 test의 의미를 가지는 데이터셋 일까요?(loss나 accuracy를 구해볼 수 있을까요?)2.현재 CPU는 Intel core i9, GPU는 RTX 2080 Ti를 사용중에 있고, 하나의 이미지에서 모델 검출속도가 약 0.08s 나오고 있습니다.Window에서 사용중에 있고,그래픽카드 4개를 사용하려고 했지만, 멀티 gpu를 사용하게 되면 sh 파일을 사용해야되는 것으로 알고있고,window에서 sh 파일이 실행되지 않는 것을 확인했습니다.0.05s 이하로 검출시간을 줄이는 것이 목적이고, 그래픽카드 성능을 보면 RTX 3090이 약 2배정도 뛰어난 성능을 나타낸다고 나와있는데 그래픽카드를 바꾸면 속도가 목표 속도까지 향상이 될까요?혹은 sh 파일을 window에서 실행시켜서 멀티 gpu를 사용할 수 있을까요?감사합니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
mask-rcnn-test dataset
안녕하세요. 강의 잘 수강하고 있습니다.현재 mask rcnn-ballon 데이터셋 학습을 진행중입니다.주석에서 train, val, test dataset 환경 파라미터가 있다고 나와있는데, train, validation 데이터 이외의 test 데이터셋은 어디에서 확인할 수 있는지 알 수 있을까요?감사합니다.
-
해결됨[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
데이터 전처리
데이터 전처리 시 왜 0~ 255 사이의 픽셀값을 0 ~ 1 사이 값으로 변환해주는 걸까요?자료의 범위가 맞춰져야 해서인 거 같은데 자세한 이유가 알고 싶습니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
mAP 0.5와 mAP 0.5-0.95의 차이
mAP의 측정 기준 중mAP0.5와 mAP 0.5-0.95는 무엇을 의미하나요?보니까 IoU를 0.5에서 0.95까지 0.05씩 올려가면서 측정한 평균 mAP라는데, 이것이 무엇을 의미하는 지 자세히 모르겠습니다
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
faster-rcnn inference 오류
현황 : BCCD에서 사용하던 코드로 Inference를 하려 했는데다음과 같은 오류가 발생하고 있습니다바쁘시겠지만 문의드립니다◇ 문의사항: 해결방안이 있을까요?코드import torchfrom mmdet.apis import multi_gpu_test, single_gpu_testfrom mmcv.parallel import MMDataParallel, MMDistributedDataParallelmodel_ckpt = MMDataParallel(model_ckpt, device_ids=[0])outputs=single_gpu_test(model_ckpt, data_loader, True, "저장폴더", 0.5)--------------------------------------------------------------------------- AssertionError Traceback (most recent call last) Input In [6], in <cell line: 8>() 5 model_ckpt = MMDataParallel(model_ckpt, device_ids=[0]) 6 # single_gpu_test를 활용하므로 samples_per_gpu는 1이 되야함 ----> 8 outputs=single_gpu_test(model_ckpt, data_loader, True, "저장폴더", 0.5) File ~/.local/lib/python3.9/site-packages/mmdet/apis/test.py:38, in single_gpu_test(model, data_loader, show, out_dir, show_score_thr) 36 img_tensor = data['img'][0].data[0] 37 img_metas = data['img_metas'][0].data[0] ---> 38 imgs = tensor2imgs(img_tensor, **img_metas[0]['img_norm_cfg']) 39 assert len(imgs) == len(img_metas) 41 for i, (img, img_meta) in enumerate(zip(imgs, img_metas)): File ~/.local/lib/python3.9/site-packages/mmcv/image/misc.py:34, in tensor2imgs(tensor, mean, std, to_rgb) 32 if torch is None: 33 raise RuntimeError('pytorch is not installed') ---> 34 assert torch.is_tensor(tensor) and tensor.ndim == 4 35 channels = tensor.size(1) 36 assert channels in [1, 3] AssertionError: show_result_pypot 사용 시 오류가 발생하는데해결방안이 있을까요?코드from mmdet.apis import show_result_pyplotimport cv2#brg image 사용img = cv2.imread("sample 이미지 위치")model.cfg = cfgresult = inference_detector(model, img)show_result_pyplot(model, img, result, score_thr=0.3)결과/home/namu/.local/lib/python3.9/site-packages/mmdet/datasets/utils.py:66: UserWarning: "ImageToTensor" pipeline is replaced by "DefaultFormatBundle" for batch inference. It is recommended to manually replace it in the test data pipeline in your config file. warnings.warn(
-
해결됨최신 딥러닝 기술 Vision Transformer 개념부터 Pytorch 구현까지
Transformer의 input에 대해 질문드립니다.
안녕하세요. Transformer에 대해 공부하면서 궁금한 점?이 있어 질문 글을 올리게 되었습니다. Transformer는 기존 seq2seq 구조와 다르게 input이 통째로 들어가서 병렬계산이 가능하다는 장점이 있다고 알고 있었습니다. 하지만 Transformer의 input도 문장의 위치에 따라 Positional Encoding(위치에 따른 sin, cos 값)이 더해지는 형태이기 때문에 일련의 sequence 형태를 가져야 된다 생각했습니다. 위는 제가 만든 그림예시인데, input 문장이 "I am student"라면, "I student am"처럼 순서를 바꿀 경우 positional encoding 값이 위치에 따라 특정 값이 들어가고 기존의 input 값과 다르기 때문에 결과적으로 Transformer의 input도 순서를 가져야만 된다라는 결론에 도달했습니다. 그렇게 된다면 순차적으로 값을 입력하는 기존 RNN 및 LSTM의 seq2seq와 input 측면에서 크게 나아진점이 없어보이는데 이 관점이 맞는걸까요? 제가 생각했던 것을 글로 표현하여 질문을 하다보니, 두서가 없는 점 죄송합니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
mmdetection mask-rcnn 추론결과 title 이름 변경 관련
안녕하세요 강사님 mmdetection 관련해서 이론적으로나 실무적으로나 항상 많은 도움 받고있습니다. 강의 내용을 바탕으로 mmdetection code를 작성하던 도중 질문사항이 생겨서요 ㅎㅎ mmdetection Mask R-CNN 모델을 이용하여 추론결과 아래 사진과 같이 mask, bbox 두가지가 나타나는데 bbox위에 나타나는 title(coin) 대신 변수를 표시하고 싶습니다. class name, confidence score 가 아닌 ID, pixel number를 표시하고 싶습니다. 제 코드는 다음과 같습니다. img_name = path_dir + '/' + file_list[i] img_arr= cv2.imread(img_name, cv2.IMREAD_COLOR) img_arr_rgb = cv2.cvtColor(img_arr, cv2.COLOR_BGR2RGB) # cv2.imshow('img',img) fig= plt.figure(figsize=(12, 12)) plt.imshow(img_arr_rgb) # inference_detector의 인자로 string(file경로), ndarray가 단일 또는 list형태로 입력 될 수 있음. results = inference_detector(model, img_arr) #추론결과 디렉토리에 저장 model.show_result(img_arr, results, score_thr=0.8, title= bbox_color=(0,0,255),thickness=0.5,font_size=7, out_file= f'{save_dir1}{file_list[i]}') 이 결과 추론되는 사진은 다음과 같습니다 아래는 mmdetection/mmdet/core/visualization/image.py에 있는 imshow_det_bboxes 함수입니다. 아래 함수가 시각화 해주는 함수여서 해당 함수를 수정하면 될 것 같은데 아무리 뜯어봐도 어디를 고쳐야할 지 도저히 감이 오질 않습니다 ...ㅠㅠ def imshow_det_bboxes(img, bboxes, labels, segms=None, class_names=None, score_thr=0, bbox_color='green', text_color='green', mask_color=None, thickness=2, font_size=13, win_name='', show=True, wait_time=0, out_file=None): """Draw bboxes and class labels (with scores) on an image. Args: img (str or ndarray): The image to be displayed. bboxes (ndarray): Bounding boxes (with scores), shaped (n, 4) or (n, 5). labels (ndarray): Labels of bboxes. segms (ndarray or None): Masks, shaped (n,h,w) or None class_names (list[str]): Names of each classes. score_thr (float): Minimum score of bboxes to be shown. Default: 0 bbox_color (str or tuple(int) or :obj:`Color`):Color of bbox lines. The tuple of color should be in BGR order. Default: 'green' text_color (str or tuple(int) or :obj:`Color`):Color of texts. The tuple of color should be in BGR order. Default: 'green' mask_color (str or tuple(int) or :obj:`Color`, optional): Color of masks. The tuple of color should be in BGR order. Default: None thickness (int): Thickness of lines. Default: 2 font_size (int): Font size of texts. Default: 13 show (bool): Whether to show the image. Default: True win_name (str): The window name. Default: '' wait_time (float): Value of waitKey param. Default: 0. out_file (str, optional): The filename to write the image. Default: None Returns: ndarray: The image with bboxes drawn on it. """ assert bboxes.ndim == 2, \ f' bboxes ndim should be 2, but its ndim is {bboxes.ndim}.' assert labels.ndim == 1, \ f' labels ndim should be 1, but its ndim is {labels.ndim}.' assert bboxes.shape[0] == labels.shape[0], \ 'bboxes.shape[0] and labels.shape[0] should have the same length.' assert bboxes.shape[1] == 4 or bboxes.shape[1] == 5, \ f' bboxes.shape[1] should be 4 or 5, but its {bboxes.shape[1]}.' img = mmcv.imread(img).astype(np.uint8) if score_thr > 0: assert bboxes.shape[1] == 5 scores = bboxes[:, -1] inds = scores > score_thr bboxes = bboxes[inds, :] labels = labels[inds] if segms is not None: segms = segms[inds, ...] mask_colors = [] if labels.shape[0] > 0: if mask_color is None: # Get random state before set seed, and restore random state later. # Prevent loss of randomness. # See: https://github.com/open-mmlab/mmdetection/issues/5844 state = np.random.get_state() # random color np.random.seed(42) mask_colors = [ np.random.randint(0, 256, (1, 3), dtype=np.uint8) for _ in range(max(labels) + 1) ] np.random.set_state(state) else: # specify color mask_colors = [ np.array(mmcv.color_val(mask_color)[::-1], dtype=np.uint8) ] * ( max(labels) + 1) bbox_color = color_val_matplotlib(bbox_color) text_color = color_val_matplotlib(text_color) img = mmcv.bgr2rgb(img) width, height = img.shape[1], img.shape[0] img = np.ascontiguousarray(img) fig = plt.figure(win_name, frameon=False) plt.title(win_name) canvas = fig.canvas dpi = fig.get_dpi() # add a small EPS to avoid precision lost due to matplotlib's truncation # (https://github.com/matplotlib/matplotlib/issues/15363) fig.set_size_inches((width + EPS) / dpi, (height + EPS) / dpi) # remove white edges by set subplot margin plt.subplots_adjust(left=0, right=1, bottom=0, top=1) ax = plt.gca() ax.axis('off') polygons = [] color = [] for i, (bbox, label) in enumerate(zip(bboxes, labels)): bbox_int = bbox.astype(np.int32) poly = [[bbox_int[0], bbox_int[1]], [bbox_int[0], bbox_int[3]], [bbox_int[2], bbox_int[3]], [bbox_int[2], bbox_int[1]]] np_poly = np.array(poly).reshape((4, 2)) polygons.append(Polygon(np_poly)) color.append(bbox_color) label_text = class_names[ label] if class_names is not None else f'class {label}' if len(bbox) > 4: label_text += f'|{bbox[-1]:.02f}' ax.text( bbox_int[0], bbox_int[1], f'{label_text}', bbox={ 'facecolor': 'black', 'alpha': 0.8, 'pad': 0.7, 'edgecolor': 'none' }, color=text_color, fontsize=font_size, verticalalignment='top', horizontalalignment='left') if segms is not None: color_mask = mask_colors[labels[i]] mask = segms[i].astype(bool) img[mask] = img[mask] * 0.5 + color_mask * 0.5 plt.imshow(img) p = PatchCollection( polygons, facecolor='none', edgecolors=color, linewidths=thickness) ax.add_collection(p) stream, _ = canvas.print_to_buffer() buffer = np.frombuffer(stream, dtype='uint8') img_rgba = buffer.reshape(height, width, 4) rgb, alpha = np.split(img_rgba, [3], axis=2) img = rgb.astype('uint8') img = mmcv.rgb2bgr(img) if show: # We do not use cv2 for display because in some cases, opencv will # conflict with Qt, it will output a warning: Current thread # is not the object's thread. You can refer to # https://github.com/opencv/opencv-python/issues/46 for details if wait_time == 0: plt.show() else: plt.show(block=False) plt.pause(wait_time) if out_file is not None: mmcv.imwrite(img, out_file) plt.close() return img 감사합니다
-
해결됨OpenCV + WebApp (얼굴 눈 검출 웹앱만들기)
가상환경에서 opencv를 찾을수 없다라고 나옵니다
안녕하세요 선생님~!! workon으로 가상환경을 진입하여 python을 실행뒤 import cv2를 하니 No module named 'cv2'라고 opencv 를 분명히 설치하였음에도 찾을수 없다라고 나옵니다 가상환경이 아닌경우에는 cv2를 import하는데 에러가 발생하지 않는데 가상환경에서만 에러가 발생하는군요... 선생님 강의를 하나도 빠짐없이 쫓아갔음에도 어디서 제가 멀 누락했는지... 몇번을 다시 반복해도 마찬가지 인데 어디가 문제일까요?? 참고로 python버전은 python3.10 입니다
-
해결됨[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
dataset 선택에 대하여 질문드립니다.
안녕하십니까 교수님 최근 진행중인 프로젝트 수행을 위해서 강의를 듣고 있는 학생입니다. 현재 depth camera 를 이용하는 딥러닝 프로젝트를 진행하며 여러가지 오픈소스를 찾던 중 ssd-mobilenet 을 PASCAL VOC 로 학습한 것과 같은 알고리즘 ssd-mobilenet를 사용하여 COCO dataset으로 학습된 것을 봤습니다. 만약 오픈 소스를 사용하는 입장이면(학습하는 시간을 고려하지 않았을 때) 무조건 데이터 분류가 많고, 사진 당 오브젝트 수가 많은 COCO 데이터셋이 학습된 소스가 좋다고 생각하는데 혹시 다른 차이가 있을까 궁금해서 이렇게 질문드리게 되었습니다 학습 분류가 많을수록 FPS 에 의한 차이가 있나요? 학습 분류가 많을수록 특정 사물에 대한 detection 성능의 차이가 있을 수 있나요? - 예를 들어 person 데이터만 필요할 때 PASCAL VOC, COCO 또는 open image 를 사용할 때 성능 차이가 발생하나요? 다른 차이가 있을까요? 강의는 항상 잘 듣고 있습니다. 덕분에 다양한 프로젝트를 진행하여 취업까지 연결할 수 있었습니다. 아직 반정도 남았지만 분발하여 꼭 완강하도록 하겠습니다. 감사합니다!!
-
해결됨[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
Mask RCNN 모델훈련시
안녕하세요 종은 강의 잘 청강하고 있습니다. Mmdetection mask RCNN 모델을 훈련시키려고 하는데, 강좌중 정확도와 재현성에 대한 강의를 보고 궁금증이 생겼습니다. 정확도와 재현성을 조정이라는 표현이 맞는지 모르겟는데, 정확도와 재현성중 사용자가 둘중 어떤 것을 높여서 교육시키는 것이 가능한지요? 가능하다면 훈련시 어떤 변수를 조정해서 훈련을 시켜야하는지요?? Mmdetection. Config 변수가 너무 많아서 좀 복잡한것 같은데... 이러한 부분은 어떤 문서를 봐야 이해가 될수 있을까요?? 홈페이지도 너무 광범위해서 초보자는 좀 헤매게 되는것 같습니다. 참. 그리고 혹시 tracking 에 대한 강좌 계획은 없으신지도 궁금합니다.